#画出每科成绩以及总分和理综的频率分布图
ggplot(aes(x=total_score),data=df)+
geom_histogram(stat='bin',bins =30,color=I('black'),fill=I('gray'))+
geom_vline(linetype='dashed',color='red',
xintercept = quantile(df$total_score,c(0.05,0.95)))
从图中可以看出,总分分布属于正态分布,异常值应存在于340分以下,580分以上。但统计意义上的异常值真实存在。
ggplot(aes(x=chinese),data=df)+
geom_histogram(stat='bin',bins=30,color=I('black'),fill=I('gray'))+
geom_vline(linetype='dashed',color='red',
xintercept = quantile(df$chinese,c(0.05,0.95)))
从图中可以看出,语文成绩分布属于正态分布,异常值应存在于75分以下,105分以上。但统计意义上的异常值真实存在。同时语文分布较窄,说明方差较小。
ggplot(aes(x=math),data=df)+
geom_histogram(stat='bin',bins =25,color=I('black'),fill=I('gray'))+
geom_vline(linetype='dashed',color='red',
xintercept = quantile(df$math,c(0.05,0.95)))
从图中可以看出,数学成绩分布属于正态分布,异常值应存在于60分以下,130分以上。但统计意义上的异常值真实存在
ggplot(aes(x=english),data=df)+
geom_histogram(stat='bin',bins =28,color=I('black'),fill=I('gray'))+
geom_vline(linetype='dashed',color='red',
xintercept = quantile(df$english,c(0.05,0.95)))
从图中可以看出,英语成绩分布属于正态分布,异常值应存在于63分以下,120分以上。但统计意义上的异常值真实存在。
ggplot(aes(x=science_integrated),data=df)+
geom_histogram(stat='bin',bins =25,color=I('black'),fill=I('gray'))+
geom_vline(linetype='dashed',color='red',
xintercept = quantile(df$science_integrated,c(0.05,0.95)))
从图中可以看出,理综成绩分布属于正态分布,异常值应存在于105分以下,240分以上。但统计意义上的异常值真实存在。
ggplot(aes(x=physics),data=df)+
geom_histogram(stat='bin',bins =28,color=I('black'),fill=I('gray'))+
geom_vline(linetype='dashed',color='red',
xintercept = quantile(df$physics,c(0.05,0.95)))
从图中可以看出,物理成绩分布属于正态分布,异常值应存在于30分以下,90分以上。但统计意义上的异常值真实存在。
ggplot(aes(x=chemistry),data=df)+
geom_histogram(stat='bin',bins =30,color=I('black'),fill=I('gray'))+
geom_vline(linetype='dashed',color='red',
xintercept = quantile(df$chemistry,c(0.05,0.95)))
从图中可以看出,化学成绩分布近似正态分布,异常值应存在于35分以下,88分以上。但统计意义上的异常值真实存在。
ggplot(aes(x=biology),data=df)+
geom_histogram(stat='bin',bins =30,color=I('black'),fill=I('gray'))+
geom_vline(linetype='dashed',color='red',
xintercept = quantile(df$biology,c(0.05,0.95)))
从图中可以看出,生物成绩分布属于正态分布,异常值应存在于30分以下,70分以上。但统计意义上的异常值真实存在。
ggplot(aes(x=rating),data=df)+
geom_bar(stat='count',color=I('black'),fill=I('gray'),width=0.2)
从上图可以看出,不同评级的学生的人数大致相同,D类学生较少的原因可能是因为上面的操作将不少缺考的学生记录(零分)删除了。
ggplot(aes(x=class_category),data=df)+
geom_bar(stat='count',color=I('black'),fill=I('gray'),width = 0.2)
Extraordinary的学生是最少的,仅有约20人,Key的学生人数在160人左右。不同类班级人数的差异的原因是人为选择因素.
#简单汇总数据
summary(df)
## student_id class_number total_score standard_score
## 12020101: 1 20 : 65 Min. :103 Min. :366.0
## 12020123: 1 4 : 62 1st Qu.:410 1st Qu.:460.0
## 12020145: 1 16 : 61 Median :464 Median :488.0
## 12020222: 1 17 : 61 Mean :459 Mean :488.5
## 12020244: 1 3 : 60 3rd Qu.:510 3rd Qu.:516.0
## 12020321: 1 26 : 60 Max. :653 Max. :616.0
## (Other) :1187 (Other):824
## rank chinese rank_of_chinese math
## Min. : 1.0 Min. : 19.00 Min. : 1.0 Min. : 10.00
## 1st Qu.: 297.0 1st Qu.: 86.00 1st Qu.: 282.0 1st Qu.: 84.00
## Median : 595.0 Median : 91.00 Median : 549.0 Median :100.00
## Mean : 594.9 Mean : 90.41 Mean : 578.9 Mean : 98.18
## 3rd Qu.: 888.0 3rd Qu.: 96.00 3rd Qu.: 855.0 3rd Qu.:114.00
## Max. :1212.0 Max. :114.00 Max. :1211.0 Max. :150.00
##
## rank_of_math english rank_of_english science_integrated
## Min. : 1.0 Min. : 23.00 Min. : 1.0 Min. : 37.0
## 1st Qu.: 287.0 1st Qu.: 83.00 1st Qu.: 289.0 1st Qu.:150.0
## Median : 596.0 Median : 95.00 Median : 589.0 Median :179.0
## Mean : 591.4 Mean : 93.66 Mean : 589.8 Mean :176.7
## 3rd Qu.: 899.0 3rd Qu.:106.00 3rd Qu.: 893.0 3rd Qu.:206.0
## Max. :1203.0 Max. :135.00 Max. :1205.0 Max. :282.0
##
## rank_of_science physics rank_of_physics chemistry
## Min. : 1.0 Min. : 2.00 Min. : 1.0 Min. : 7.00
## 1st Qu.: 295.0 1st Qu.: 49.00 1st Qu.: 278.0 1st Qu.:53.00
## Median : 593.0 Median : 62.00 Median : 586.0 Median :66.00
## Mean : 594.6 Mean : 61.74 Mean : 588.9 Mean :63.88
## 3rd Qu.: 888.0 3rd Qu.: 76.00 3rd Qu.: 896.0 3rd Qu.:77.00
## Max. :1202.0 Max. :110.00 Max. :1206.0 Max. :97.00
##
## rank_of_chemistry biology rank_of_biology rating
## Min. : 1.0 Min. :11.00 Min. : 1.0 A:314
## 1st Qu.: 277.0 1st Qu.:43.00 1st Qu.: 280.0 B:304
## Median : 576.0 Median :51.00 Median : 592.0 C:307
## Mean : 588.6 Mean :51.11 Mean : 585.9 D:268
## 3rd Qu.: 894.0 3rd Qu.:60.00 3rd Qu.: 889.0
## Max. :1205.0 Max. :86.00 Max. :1205.0
##
## class_category
## Length:1193
## Class :character
## Mode :character
##
##
##
##
每一个考生id表示一个考生的成绩观察记录结果,每一列代表一个变量,包括的变量有考生id,考生班级,每一科的成绩与年级排名,总分和总分排名,以及理科综合(物理,生物和化学)及其排名。含有1232个观测值和20个变量。
1.每个科目以及总分的分布是否都近似与正态分布;
2.不同学科之间是否彼此间存在相关性;
3.不同类班级的总分分布范围是怎样的;
4.不同类班级间总分间的差异主要取决于哪一科目;
5.不同评级类学生科目成绩的差异是怎样的;
6.经验“语文英语好的学生普遍数理差,数理好的学生学不好语文和英语”是否能被证实。
不同科目的具体分数,类别变量rating和class_number、class_category
创建了新的变量class_category,方便探究不同类班级成绩的差异。
不存在,都近似于正态分布。我清理了不同科目下为零分的成绩记录,因为零分的存在是由于缺考,将这类数据保留可能会对结论的可靠性造成负面影响。
单变量分析总结:
1.探究的变量(各科成绩)均近似服从正态分布,因为对成绩具有影响的随机变量特别多,符合中心极限定理。同时也符合我们的日常生活经验,‘学霸’和‘学渣’都是人群中的少数。
2.语文的分布特别窄,说明语文成绩的方差较小,符合老师们的经典语录“语文拉不开分”。
#绘制单科成绩与总成绩的散点图,观察相关关系
library('gridExtra')
g1<-ggplot(aes(x=chinese,y=total_score),data=df) +
geom_point(alpha = 0.5, size = 0.4, position = 'jitter')
g2<-ggplot(aes(x=math,y=total_score),data=df) +
geom_point(alpha = 0.5, size = 0.4, position = 'jitter')
g3<-ggplot(aes(x=english,y=total_score),data=df) +
geom_point(alpha = 0.5, size = 0.4, position = 'jitter')
g4<-ggplot(aes(x=science_integrated,y=total_score),data=df) +
geom_point(alpha = 0.5, size = 0.4, position = 'jitter')
g5<-ggplot(aes(x=physics,y=total_score),data=df) +
geom_point(alpha = 0.5, size = 0.4, position = 'jitter')
g6<-ggplot(aes(x=chemistry,y=total_score),data=df) +
geom_point(alpha = 0.5, size = 0.4, position = 'jitter')
g7<-ggplot(aes(x=biology,y=total_score),data=df) +
geom_point(alpha = 0.5, size = 0.4, position = 'jitter')
grid.arrange(g1,g2,g3,g4,g5,g6,g7,ncol=2)
从上图可以看出所有的学科成绩均与总分呈现正相关,数理性质的学科与总分之间会有更强的相关性,而语言学科与总分的相关性并没有那么强。
#绘制理综成绩与数学、物理、化学的散点图,以及数学与物理的散点图观察相关关系(相关性较强)
s1<-ggplot(aes(x=math,y=science_integrated),data=df) +
geom_point(alpha=0.5, size = 0.4, position = 'jitter')
s2<-ggplot(aes(x=math,y=physics),data=df) +
geom_point(alpha=0.5, size = 0.4, position = 'jitter')
s3<-ggplot(aes(x=physics,y=science_integrated),data=df) +
geom_point(alpha=0.5,size=0.4, position = 'jitter')
s4<-ggplot(aes(x=chemistry,y=science_integrated),data=df) +
geom_point(alpha=0.5,size=0.4, position = 'jitter')
grid.arrange(s1,s2,s3,s4)
数学和理综学科间的的相关性较强。
#语文和英语(语言学科间的相关性)
ggplot(aes(x=chinese,y=english),data=df) +
geom_point(alpha = 0.5, size = 0.4, position = 'jitter')
语言学科间的相关性不是很明显。
#两两变量相关系数矩阵
vars<-c("total_score","chinese","math","english","science_integrated","physics","chemistry","biology")
relation <- cor(df[vars])
relation
## total_score chinese math english
## total_score 1.0000000 0.5488360 0.8716357 0.7076955
## chinese 0.5488360 1.0000000 0.4005042 0.4559474
## math 0.8716357 0.4005042 1.0000000 0.4801175
## english 0.7076955 0.4559474 0.4801175 1.0000000
## science_integrated 0.9353162 0.3773129 0.7588580 0.5092228
## physics 0.8321405 0.2952857 0.7051731 0.4335059
## chemistry 0.8298133 0.3543669 0.6761055 0.4511540
## biology 0.7321922 0.3309654 0.5441445 0.4294743
## science_integrated physics chemistry biology
## total_score 0.9353162 0.8321405 0.8298133 0.7321922
## chinese 0.3773129 0.2952857 0.3543669 0.3309654
## math 0.7588580 0.7051731 0.6761055 0.5441445
## english 0.5092228 0.4335059 0.4511540 0.4294743
## science_integrated 1.0000000 0.8902644 0.8817071 0.7893437
## physics 0.8902644 1.0000000 0.6602919 0.5522680
## chemistry 0.8817071 0.6602919 1.0000000 0.5875243
## biology 0.7893437 0.5522680 0.5875243 1.0000000
corrplot(corr = relation)
结合上面的相关系数矩阵和热度图,可以看出语文成绩与总成绩间的关系最弱;理科性质的学科,例如数学和物理对总成绩的相关性最强,其中理科学科与总成绩的相关性最弱的是生物;语文和其他的科目相关性最高的是英语,但是相关系数依然低于0.5。
library('gridExtra')
j1<-ggplot(aes(x=rating,y=total_score),data=df) +
geom_jitter(alpha = 0.5, size = 0.4, position = 'jitter')
j2<-ggplot(aes(x=rating,y=chinese),data=df) +
geom_jitter(alpha = 0.5, size = 0.4, position = 'jitter')
j3<-ggplot(aes(x=rating,y=math),data=df) +
geom_jitter(alpha = 0.5, size = 0.4, position = 'jitter')
j4<-ggplot(aes(x=rating,y=english),data=df) +
geom_jitter(alpha = 0.5, size = 0.4, position = 'jitter')
j5<-ggplot(aes(x=rating,y=science_integrated),data=df) +
geom_jitter(alpha = 0.5, size = 0.4, position = 'jitter')
j6<-ggplot(aes(x=rating,y=physics),data=df) +
geom_jitter(alpha = 0.5, size = 0.4, position = 'jitter')
j7<-ggplot(aes(x=rating,y=chemistry),data=df) +
geom_jitter(alpha = 0.5, size = 0.4, position = 'jitter')
j8<-ggplot(aes(x=rating,y=biology),data=df) +
geom_jitter(alpha = 0.5, size = 0.4, position = 'jitter')
grid.arrange(j1,j2,j3,j4,j5,j6,j7,j8,ncol=2)
library('doBy')
by(df[vars],df$rating,summary)
## df$rating: A
## total_score chinese math english
## Min. :507.0 Min. : 76.0 Min. : 92.0 Min. : 75.0
## 1st Qu.:522.0 1st Qu.: 91.0 1st Qu.:113.0 1st Qu.:100.0
## Median :541.0 Median : 95.0 Median :122.0 Median :108.0
## Mean :547.9 Mean : 95.5 Mean :121.1 Mean :108.1
## 3rd Qu.:566.0 3rd Qu.:100.0 3rd Qu.:128.8 3rd Qu.:116.8
## Max. :653.0 Max. :114.0 Max. :150.0 Max. :135.0
## science_integrated physics chemistry biology
## Min. :172.0 Min. : 49.00 Min. :50.00 Min. :29.00
## 1st Qu.:209.0 1st Qu.: 74.00 1st Qu.:74.25 1st Qu.:56.00
## Median :222.0 Median : 81.00 Median :81.00 Median :63.00
## Mean :223.2 Mean : 81.54 Mean :79.59 Mean :62.04
## 3rd Qu.:235.0 3rd Qu.: 88.00 3rd Qu.:85.00 3rd Qu.:68.00
## Max. :282.0 Max. :110.00 Max. :97.00 Max. :86.00
## --------------------------------------------------------
## df$rating: B
## total_score chinese math english
## Min. :461.0 Min. : 75.00 Min. : 67.0 Min. : 58.00
## 1st Qu.:472.0 1st Qu.: 86.00 1st Qu.: 96.0 1st Qu.: 89.00
## Median :482.0 Median : 91.00 Median :105.0 Median : 98.00
## Mean :482.9 Mean : 91.34 Mean :104.6 Mean : 97.13
## 3rd Qu.:494.0 3rd Qu.: 96.00 3rd Qu.:113.0 3rd Qu.:105.25
## Max. :506.0 Max. :110.00 Max. :136.0 Max. :127.00
## science_integrated physics chemistry biology
## Min. :143.0 Min. :30.00 Min. :38.00 Min. :26.00
## 1st Qu.:179.0 1st Qu.:59.00 1st Qu.:63.00 1st Qu.:47.75
## Median :190.0 Median :66.00 Median :71.00 Median :53.00
## Mean :189.8 Mean :66.37 Mean :69.83 Mean :53.65
## 3rd Qu.:201.0 3rd Qu.:74.00 3rd Qu.:77.00 3rd Qu.:59.00
## Max. :236.0 Max. :90.00 Max. :93.00 Max. :76.00
## --------------------------------------------------------
## df$rating: C
## total_score chinese math english
## Min. :406.0 Min. : 63.0 Min. : 56.00 Min. : 50.00
## 1st Qu.:416.5 1st Qu.: 85.0 1st Qu.: 84.00 1st Qu.: 82.00
## Median :437.0 Median : 90.0 Median : 92.00 Median : 91.00
## Mean :434.0 Mean : 89.5 Mean : 92.05 Mean : 90.01
## 3rd Qu.:449.0 3rd Qu.: 94.0 3rd Qu.:101.00 3rd Qu.: 99.50
## Max. :460.0 Max. :107.0 Max. :127.00 Max. :121.00
## science_integrated physics chemistry biology
## Min. :114.0 Min. :22.00 Min. :28.00 Min. :15.00
## 1st Qu.:151.0 1st Qu.:48.00 1st Qu.:52.00 1st Qu.:41.00
## Median :162.0 Median :55.00 Median :59.00 Median :49.00
## Mean :162.4 Mean :55.32 Mean :59.05 Mean :48.05
## 3rd Qu.:174.5 3rd Qu.:63.00 3rd Qu.:67.00 3rd Qu.:54.00
## Max. :222.0 Max. :80.00 Max. :89.00 Max. :75.00
## --------------------------------------------------------
## df$rating: D
## total_score chinese math english
## Min. :103.0 Min. : 19.00 Min. : 10.00 Min. : 23.00
## 1st Qu.:337.0 1st Qu.: 80.00 1st Qu.: 63.00 1st Qu.: 68.00
## Median :372.0 Median : 86.00 Median : 74.50 Median : 79.00
## Mean :356.3 Mean : 84.46 Mean : 71.05 Mean : 76.93
## 3rd Qu.:390.2 3rd Qu.: 90.00 3rd Qu.: 84.00 3rd Qu.: 87.00
## Max. :405.0 Max. :108.00 Max. :108.00 Max. :109.00
## science_integrated physics chemistry biology
## Min. : 37.0 Min. : 2.00 Min. : 7.00 Min. :11.00
## 1st Qu.:109.0 1st Qu.:32.00 1st Qu.:36.00 1st Qu.:32.75
## Median :125.0 Median :39.00 Median :44.50 Median :40.00
## Mean :123.9 Mean :40.67 Mean :44.26 Mean :38.95
## 3rd Qu.:141.2 3rd Qu.:50.00 3rd Qu.:54.25 3rd Qu.:46.00
## Max. :181.0 Max. :80.00 Max. :80.00 Max. :63.00
结合上面两个chunk的结果,不同评级学生成绩的分布不同,总的来说A>B>C>D,其中语文成绩上四个评级相差不大。
#观察不同类班级的各科成绩的分布
v1<-ggplot(aes(x=class_category,y=total_score),data=df) +
geom_violin()
v2<-ggplot(aes(x=class_category,y=chinese),data=df) +
geom_violin()
v3<-ggplot(aes(x=class_category,y=english),data=df) +
geom_violin()
v4<-ggplot(aes(x=class_category,y=math),data=df) +
geom_violin()
v5<-ggplot(aes(x=class_category,y=science_integrated),data=df) +
geom_violin()
v6<-ggplot(aes(x=class_category,y=physics),data=df) +
geom_violin()
v7<-ggplot(aes(x=class_category,y=chemistry),data=df) +
geom_violin()
v8<-ggplot(aes(x=class_category,y=biology),data=df) +
geom_violin()
grid.arrange(v1,v2,v3,v4,v5,v6,v7,v8,ncol=2)
by(df[vars],df$class_category,summary)
## df$class_category: Extraordinary
## total_score chinese math english
## Min. :534.0 Min. : 83.00 Min. :101.0 Min. :112.0
## 1st Qu.:595.8 1st Qu.: 98.25 1st Qu.:127.0 1st Qu.:119.8
## Median :614.5 Median :101.00 Median :131.0 Median :123.0
## Mean :614.0 Mean :100.59 Mean :131.6 Mean :123.3
## 3rd Qu.:641.2 3rd Qu.:104.75 3rd Qu.:137.8 3rd Qu.:126.8
## Max. :653.0 Max. :109.00 Max. :150.0 Max. :135.0
## science_integrated physics chemistry biology
## Min. :225.0 Min. : 82.00 Min. :76.00 Min. :57.0
## 1st Qu.:248.0 1st Qu.: 88.25 1st Qu.:86.25 1st Qu.:65.5
## Median :261.5 Median :100.00 Median :88.50 Median :71.0
## Mean :258.6 Mean : 98.73 Mean :88.36 Mean :71.5
## 3rd Qu.:271.8 3rd Qu.:108.00 3rd Qu.:91.75 3rd Qu.:77.0
## Max. :282.0 Max. :110.00 Max. :97.00 Max. :86.0
## --------------------------------------------------------
## df$class_category: Key
## total_score chinese math english
## Min. :347.0 Min. : 78.0 Min. : 72.0 Min. : 70.0
## 1st Qu.:498.5 1st Qu.: 92.0 1st Qu.:104.0 1st Qu.: 99.0
## Median :531.0 Median : 95.0 Median :115.0 Median :108.0
## Mean :523.7 Mean : 95.6 Mean :114.0 Mean :106.9
## 3rd Qu.:559.8 3rd Qu.:100.0 3rd Qu.:124.8 3rd Qu.:116.0
## Max. :615.0 Max. :114.0 Max. :146.0 Max. :130.0
## science_integrated physics chemistry biology
## Min. :102.0 Min. : 20.00 Min. :28.00 Min. :25.00
## 1st Qu.:191.2 1st Qu.: 64.00 1st Qu.:67.50 1st Qu.:51.00
## Median :210.5 Median : 76.50 Median :77.00 Median :59.50
## Mean :207.2 Mean : 74.53 Mean :74.05 Mean :58.63
## 3rd Qu.:230.0 3rd Qu.: 85.50 3rd Qu.:83.00 3rd Qu.:67.00
## Max. :258.0 Max. :105.00 Max. :96.00 Max. :78.00
## --------------------------------------------------------
## df$class_category: Normal
## total_score chinese math english
## Min. :103.0 Min. : 19.00 Min. : 10.00 Min. : 23.00
## 1st Qu.:404.0 1st Qu.: 85.00 1st Qu.: 82.00 1st Qu.: 81.00
## Median :455.0 Median : 90.00 Median : 96.00 Median : 93.00
## Mean :445.8 Mean : 89.41 Mean : 95.06 Mean : 91.01
## 3rd Qu.:493.0 3rd Qu.: 95.00 3rd Qu.:111.00 3rd Qu.:103.00
## Max. :611.0 Max. :111.00 Max. :146.00 Max. :130.00
## science_integrated physics chemistry biology
## Min. : 37.0 Min. : 2.00 Min. : 7.00 Min. :11.00
## 1st Qu.:144.0 1st Qu.: 47.00 1st Qu.:51.00 1st Qu.:42.00
## Median :173.0 Median : 59.00 Median :63.00 Median :50.00
## Mean :170.4 Mean : 59.01 Mean :61.81 Mean :49.54
## 3rd Qu.:200.0 3rd Qu.: 72.00 3rd Qu.:74.00 3rd Qu.:58.00
## Max. :266.0 Max. :104.00 Max. :94.00 Max. :79.00
结合上面两个chunk的结果,不同类班级学生成绩的分布不同,总的来说Extraordinary>Key>Normal,同样语文成绩三类班级级相差不大。值得注意的是,三个班各单个科目最高分其实相差不大,差别主要体现在平均值上。
在双变量分析中,观察到不同科目间存在的相关性,不同科目成绩间的相关性或强或弱:
1.各个科目的成绩都与总成绩呈现不同程度的正相关;
2.语文与其他所有科目的相关性都不高;
3.数学与物理以及理综间的相关性较强。
这些感兴趣的特性将不同的特性联系起来,揭示了特性之间的相关性。
1.语文成绩与总成绩间的关系最弱;
2.理科性质的学科,例如数学和物理对总成绩的相关性最强,其中理科学科与总成绩的相关性最弱的是生物;
3.语文和其他的科目相关性最高的是英语,但是相关系数依然低于0.5;
4.不同类型的班级的总分分布存在显著差异,extraordinary>key>normal.
理综和总分的关系,其次就是数学。
#画出不同评级学生各科成绩的分布(按照班级类型对评级进行再划分)
t1<-ggplot(aes(x=rating,y=chinese,color=class_category),data=df) +
geom_violin()
t2<-ggplot(aes(x=rating,y=math,color=class_category),data=df) +
geom_violin()
t3<-ggplot(aes(x=rating,y=english,color=class_category),data=df) +
geom_violin()
t4<-ggplot(aes(x=rating,y=science_integrated,color=class_category),data=df) +
geom_violin()
t5<-ggplot(aes(x=rating,y=physics,color=class_category),data=df) +
geom_violin()
t6<-ggplot(aes(x=rating,y=chemistry,color=class_category),data=df) +
geom_violin()
t7<-ggplot(aes(x=rating,y=biology,color=class_category),data=df) +
geom_violin()
t8<-ggplot(aes(x=rating,y=total_score,color=class_category),data=df) +
geom_violin()
grid.arrange(t1,t2,t3,t4,t5,t6,t7,t8,ncol=2)
从图中可以看出,Extraordinary的学生全部属于a类评级,整体的趋势还是评级A>B>C>D,在同一评级下,Extraordinary>Key>Normal。
i1<-ggplot(aes(x=rating,y=chinese),data=df)+
geom_jitter(aes(color=class_category),alpha=0.7,
size=0.4,position=position_jitter(h=0))+
scale_color_brewer(type = 'div',palette="Set2")
i2<-ggplot(aes(x=rating,y=math),data=df)+
geom_jitter(aes(color=class_category),alpha=0.7,size=0.4,
position=position_jitter(h=0))+
scale_color_brewer(type = 'div',palette="Set2")
i3<-ggplot(aes(x=rating,y=english),data=df)+
geom_jitter(aes(color=class_category),alpha=0.7,size=0.4,
position=position_jitter(h=0))+
scale_color_brewer(type = 'div',palette="Set2")
i4<-ggplot(aes(x=rating,y=physics),data=df)+
geom_jitter(aes(color=class_category),alpha=0.7,size=0.4,
position=position_jitter(h=0))+
scale_color_brewer(type = 'div',palette="Set2")
i5<-ggplot(aes(x=rating,y=chemistry),data=df)+
geom_jitter(aes(color=class_category),alpha=0.7,size=0.4,
position=position_jitter(h=0))+
scale_color_brewer(type = 'div',palette="Set2")
i6<-ggplot(aes(x=rating,y=biology),data=df)+
geom_jitter(aes(color=class_category),alpha=0.7,size=0.4,
position=position_jitter(h=0))+
scale_color_brewer(type = 'div',palette="Set2")
grid.arrange(i1,i2,i3,i4,i5,i6,ncol=2)
此图相较于上图包括了人数的信息(每个点表示一个个体)。两者结论一致。
#以下是对双变量分析中相关性较强的变量间的探究,探究不同评级的学生的这些学科间的相关性存在怎样的差异
#理综和总分
ggplot(aes(x=science_integrated,y=total_score),data=df) +
geom_point(aes(color=class_category),alpha=0.5,size=0.8)+geom_smooth(size=0.6)+
facet_wrap(~rating,scale='free')
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
理综与总分之间的相关性在评级为A和D的学生中最显著,在B和C同学的学生中不显著。
#数学和总分
ggplot(aes(x=math,y=total_score),data=df) +
geom_point(aes(color=class_category),alpha=0.5,size=0.8)+geom_smooth(size=0.6)+
facet_wrap(~rating,scale='free')
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
数学与总分之间的相关性在评级为A和D的学生中最显著,在B和C同学的学生中不显著
#物理和理综
ggplot(aes(x=physics,y=science_integrated),data=df) +
geom_point(aes(color=class_category),alpha=0.5,size=0.8)+
geom_smooth(size=0.6)+facet_wrap(~rating,scale='free')
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
物理与理综四个评级中都显著,评级A的物理与理综最显著。
#化学和理综
ggplot(aes(x=chemistry,y=science_integrated),data=df) +
geom_point(aes(color=class_category),alpha=0.5,size=0.8)+geom_smooth(size=0.6)+
facet_wrap(~rating,scale='free')
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
化学与理综的相关性在四个评级中都显著,评级D的化学与理综最显著
#接下来,探讨关键经验问题,语言类学科与数理学科真的对理科生来说是“鱼与熊掌不可兼得”吗?
#将语言学科和数理学科的成绩加和汇总,探究两者之间的相关性
ggplot(aes(x=df$chinese+df$english,y=df$math+df$science_integrated),data=df)+
geom_point(aes(color=class_category),alpha=0.7,size=1,
position=position_jitter(h=0))+
facet_wrap(~rating,scale='free')+geom_smooth(size=0.6)
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
从图中发现了一个很有意思的现象,评级B和C的同学语言成绩与数理成绩出现了明显的负相关,在A与B,D与C类交界的地方也存在负相关。
1.Extraordinary所有学生的评级均为A;
2.Key班分布的最宽的地方几乎都位与比Normal班最宽部位的上方(小提琴图);
3.不同班,不同评级的学生在语文成绩上的分布差异最小;
4.学科之间的相关性会因评级的不同而有所差异。
存在。
1.数学与总分以及理综与总分之间的相关性在评级为A和D的学生中最显著,在B和C同学的学生中不显著。
2.物理与理综和化学与理综的相关性在四个评级中都显著,评级A的物理与理综最显著,评级D的化学与理综最显著。
这幅图显示了不同评级,不同类班级的学生在各科成绩以及总分上的分布。其中红色虚线分别表示,该项成绩的百分之75,百分之50以及百分之25的分位数。
从图中可以看出,Extraordinary类班级的成绩分布几乎位于所有科目成绩分布的最上方。Extraordinary与Key班级的学生绝大部分属于评级A。在每科成绩的75%分位线上的C,D类学生很少,这类学生往往属于偏科生。A类学生大部分位于各科成绩的50%的分位数线的上方。不同评级以及不同类班级在成绩上差别最大的单个学科是数学和物理,差异最小的是语文。
这幅热图来自于分析图报告中的热图的优化,表示了不同学科间两两的相关系数的大小情况。颜色越深表示,两个学科成绩之间的相关性越强。
从图中可以看出,总分与数学和理综的相关性非常强。语文与其他科目的相关性都很差。数理性质比较强的科目之间也存在着不小的相关性。揭示了不同的理科学科背后可能都要求学生具有很类似的数理逻辑能力。
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
这幅图主要描述了不同评级类学生语言成绩(语文和英语)以及数理成绩(数学和理综)间的相关性;
从图中发现了一个很有意思的现象,评级B和C的同学语言成绩与数理成绩出现了明显的负相关,在A与B,D与C类交界的地方也存在负相关。这说明大部分中等学生很难同时把握数理能力和语言能力(也就是存在一定程度的偏科),而这一特点也限制了B,C类学生的成绩,也证实了我们经验“语文英语好的学生普遍数理差,数理好的学生学不好语文和英语”存在一定道理。对于A类学生中的高分段的学生,出现了一定程度正相关,也说明了要想取得高分必须同时掌握这两种能力,尽管有时候这两种能力可能会有些互相冲突的地方。
梗概:
该项目,我通过单变量分析确认感兴趣的变量的分布,通过双变量分析确定变量间的相关性水平以及通过多变量分析引入更多的维度分析不同评级,不同类班级会对成绩的分布以及科目之间的相关性产生怎样的影响。意在多方位揭示学科之间的关系,以及理科学生总成绩的差异来源于哪些方面。
成功与挫折:
这次项目的成功之处在于通过单变量分析确认感兴趣的变量的分布,通过双变量分析确定变量间的相关性水平以及通过多变量分析引入更多的维度分析揭示了不同评级,不同类班级会对成绩的分布以及科目之间的相关性产生怎样的影响。这次项目也经受了一些挫折(局限),比如一次考试的成绩可能具有偶然性,相关性的结果可能会受此影响,难以看出并衡量学生的潜力或者竞争力。
未来的建议和思路:
我在以后可以尝试多纳入几次考试的成绩,构成一个时间序列式的数据集,用这种方式来评价一个学生的潜力。也可以针对各科成绩排名构建评级变量,与总评级一起更全面地探究学科间的相关关系。
重要的决定和产生的影响:
1.创建了分类变量“class_category”,揭示了不同类班级成绩分布上的差别。
2.在进行相关性分析的时候,引入学生的评级,揭示出了不同评级下的学生科目成绩间的相关性是有所差异的。